package com.tron.dobest.fastjson;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;

import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.Date;
import java.util.List;

public class Start {
    private static JsonData jsonData;

    static {
        jsonData = new JsonData();
        jsonData.setNumber(11);
//        jsonData.setStr("abcd");
        final JsonData.Inner inner = new JsonData.Inner();
        inner.setIstr("innerString");
        jsonData.setInners(Arrays.asList(inner));
        jsonData.setDate(new Date());
        jsonData.setTime(LocalDateTime.now());
    }
    public static void main(String[] args) {

        /**
         * 对象转换json字符串,当有空值时，字段将不被处理
         */
        String s1 = JSON.toJSONString(jsonData);
        System.out.println("JSON.toJSONString------"+s1);

        /**
         * 对象转换json字符串,当有空值时，字段将不被处理
         */
        String s2 = JSONObject.toJSONString(jsonData);
        System.out.println("JSONObject.toJSONString------"+s2);


        /**
         * 对象转换json字符串,当有空值时，字段赋值null,如果bool类型为空值是赋值false
         */
        String s3 = JSON.toJSONString(jsonData, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullBooleanAsFalse);
        System.out.println("JSON.toJSONString------"+s3);


        /**
         * 对象转换json字符串,当有空值时，字段赋值null,字符串用""赋值
         */
        String s4 = JSONObject.toJSONString(jsonData, SerializerFeature.WriteMapNullValue,SerializerFeature.WriteNullStringAsEmpty);
        System.out.println("JSONObject.toJSONString------"+s4);


        /**
         * json字符串转对象
         */
        JsonData jsonData1 = JSON.parseObject(s4, JsonData.class);
        System.out.println("JSON.parseObject------"+jsonData1);

        /**
         * json字符串转对象
         */
        JsonData jsonData2 = JSONObject.parseObject(s4, JsonData.class);
        System.out.println("JSONObject.parseObject------"+jsonData2);

        /**
         * json字符串转JSONObject
         */
        String jsonStr1 = "{ \"time\" : \"2020-02-13 01:02:19\" , \"user\":\"admin\",\"ulr\":\"/aopTest\"  }";

        JSONObject jsonObject1 = JSON.parseObject(jsonStr1);
        System.out.println("JSON.parseObject------"+jsonObject1);

        /**
         * json字符串转JSONObject
         */
        JSONObject jsonObject2 = JSONObject.parseObject(jsonStr1);
        System.out.println("JSONObject.parseObject------"+jsonObject2);


        /**
         * json字符串转json数组
         */
        String jsonStr2 = "['a','b','c','d']";
        List<String> strings = JSONArray.parseArray(jsonStr2, String.class);
        System.out.println("JSONArray.parseArray------"+strings);


        /**
         * 获取jsonObject中的数据
         */
        String jsonStr3 = "{\"code\":200,\"data\":{\"id\":1,\"brandId\":1,\"productCategoryId\":11,\"feightTemplateId\":1,\"productAttributeCategoryId\":1,\"name\":\"书籍\",\"pic\":null,\"productSn\":null,\"deleteStatus\":0,\"recycleStatus\":0,\"publishStatus\":0,\"newStatus\":0,\"recommandStatus\":0,\"verifyStatus\":0,\"sort\":0,\"sale\":0,\"price\":null,\"promotionPrice\":0.00,\"giftGrowth\":0,\"giftPoint\":0,\"usePointLimit\":null,\"subTitle\":null,\"description\":null,\"originalPrice\":null,\"stock\":0,\"lowStock\":0,\"unit\":null,\"weight\":null,\"previewStatus\":null,\"serviceIds\":null,\"keywords\":null,\"note\":null,\"albumPics\":null,\"detailTitle\":null,\"detailDesc\":null,\"detailHtml\":null,\"detailMobileHtml\":null,\"promotionStartTime\":null,\"promotionEndTime\":null,\"promotionPerLimit\":null,\"promotionType\":null,\"brandName\":null,\"productCategoryName\":null,\"supplyId\":null,\"createTime\":null,\"schoolId\":null,\"storeId\":1,\"memberId\":null,\"hit\":0,\"type\":0,\"areaId\":null,\"areaName\":null,\"schoolName\":null,\"transfee\":0,\"isPaimai\":1,\"expireTime\":null,\"storeName\":null,\"isFree\":null,\"salePrice\":null,\"costPrice\":null,\"series\":null,\"isCover\":null,\"isVir\":null,\"salesWords\":null}}";
        JSONObject parseObject = JSON.parseObject(jsonStr3);
        if (parseObject.getInteger("code") == 200) {
            JSONObject data = parseObject.getJSONObject("data");
            System.out.println("获取jsonObject中的数据------"+data.getString("id"));
        }


    }
}
